package grupobbva.pe.operhc.listener;

import static grupobbva.pe.operhc.util.Constant.BROKER_ENDPOINT;
import static grupobbva.pe.operhc.util.Constant.COD_APLICACION_LDAP;
import static grupobbva.pe.operhc.util.Constant.COD_PERFIL_DEFECTO;
import static grupobbva.pe.operhc.util.Constant.DES_PERFIL_DEFECTO;
import static grupobbva.pe.operhc.util.Constant.ENCODING_HOST;
import static grupobbva.pe.operhc.util.Constant.QMGR_HOST;
import static grupobbva.pe.operhc.util.Constant.QUEUE_DIST_IN;
import static grupobbva.pe.operhc.util.Constant.QUEUE_DIST_OUT;
import static grupobbva.pe.operhc.util.Constant.QUEUE_HOST_OUT;
import static grupobbva.pe.operhc.util.Constant.RANGO_TERMINALES;
import static grupobbva.pe.operhc.util.Constant.SI;
import static grupobbva.pe.operhc.util.Constant.SIN_TIPO;
import static grupobbva.pe.operhc.util.Constant.TERMINAL_CONTABLE;
import static grupobbva.pe.operhc.util.Constant.TERMINAL_FIJO;
import static grupobbva.pe.operhc.util.Constant.USUARIO_GENERICO;
import static grupobbva.pe.operhc.util.Constant.VALIDAR_CARGAINICIAL;
import static grupobbva.pe.operhc.util.Constant.VALIDAR_PERFILADO;
import static grupobbva.pe.operhc.util.Constant.WSLDAP_ENDPOINT;
import grupobbva.pe.operhc.domain.Segmento;
import grupobbva.pe.operhc.service.ParametroService;
import grupobbva.pe.operhc.service.ParametroServiceImpl;
import grupobbva.pe.operhc.util.GenericObject;
import grupobbva.pe.operhc.util.PS9Builder;
import grupobbva.pe.operhc.util.RangoTerminal;
import grupobbva.pe.operhc.util.Utilities;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import org.apache.log4j.Logger;



public class CargaInicialListener implements ServletContextListener {
	private ParametroService parametroService = null;
	
	public void contextInitialized(ServletContextEvent e){
		ServletContext cntxt = e.getServletContext();
		Logger logger = Logger.getLogger(this.getClass());
		String codigoUsuario="";
		
	
		try {
						
				parametroService = new ParametroServiceImpl(); 
				Map<String, String> parametroBroker = parametroService.getMapParametersByParameterType(SIN_TIPO);
				
				Utilities.BROKER_SOCKET = parametroBroker.get(BROKER_ENDPOINT);
				Utilities.TERMINAL_CONTABLE = parametroBroker.get(TERMINAL_CONTABLE);
				Utilities.TERMINAL_LOGICO = RangoTerminal.getTerminalLogico(parametroBroker.get(RANGO_TERMINALES));
				Utilities.TERMINAL_FIJO = parametroBroker.get(TERMINAL_FIJO);
				
				Utilities.WSLDAP_ENDPOINT = parametroBroker.get(WSLDAP_ENDPOINT);
				Utilities.VALIDAR_PERFILADO = parametroBroker.get(VALIDAR_PERFILADO);
				Utilities.COD_PERFIL_DEFECTO = parametroBroker.get(COD_PERFIL_DEFECTO);
				Utilities.DES_PERFIL_DEFECTO = parametroBroker.get(DES_PERFIL_DEFECTO);
				Utilities.COD_APLICACION_LDAP = parametroBroker.get(COD_APLICACION_LDAP);
								
				Utilities.USUARIO_GENERICO = parametroBroker.get(USUARIO_GENERICO);
				
				Utilities.QUEUE_DIST_IN = parametroBroker.get(QUEUE_DIST_IN);
				Utilities.QUEUE_DIST_OUT = parametroBroker.get(QUEUE_DIST_OUT);
				Utilities.QMGR_HOST = parametroBroker.get(QMGR_HOST);
				Utilities.QUEUE_HOST_OUT = parametroBroker.get(QUEUE_HOST_OUT);
				Utilities.ENCODING_HOST = parametroBroker.get(ENCODING_HOST);
				Utilities.VALIDAR_CARGAINICIAL = parametroBroker.get(VALIDAR_CARGAINICIAL);
				//inyectarValoresPruebaCalidad();
				codigoUsuario=Utilities.USUARIO_GENERICO;
				
			if(SI.equalsIgnoreCase(Utilities.VALIDAR_CARGAINICIAL)) {		
			
				/*String terminalCLIO = "";
				try {
					terminalCLIO = PS9Builder.callQSP5(codigoUsuario, codigoUsuario);
				} catch(Exception e1) {
					logger.error(GenericObject.formatException(e1));
					terminalCLIO = "    ";
				}*/
				cntxt.setAttribute("CI_terminalCLIO", "");
				
				List<Segmento> listaSegmentosHOST = new ArrayList<Segmento>();
				try {
					listaSegmentosHOST=PS9Builder.obtenerSegmentos(codigoUsuario);
				} catch (Exception e2) {
					logger.error(GenericObject.formatException(e2));
					listaSegmentosHOST = new ArrayList<Segmento>();
				}
				cntxt.setAttribute("CI_listSegmentos", listaSegmentosHOST);
			
			}
			
		} catch (Exception ex) {
			logger.error(GenericObject.formatException(ex));
		}

	}
	private static void inyectarValoresPruebaCalidad() {	
		
		Utilities.BROKER_SOCKET = "118.180.36.28:7802";
		Utilities.TERMINAL_CONTABLE = "7%60";
		Utilities.TERMINAL_LOGICO = "7%91";
		Utilities.TERMINAL_FIJO = "%F10";
		
		Utilities.QUEUE_DIST_IN = "QLC.OHC.RESPA";
		Utilities.QUEUE_DIST_OUT = "QRC.OHC.ENVIO.MPD1";
		Utilities.QMGR_HOST = "MPD1";
		Utilities.QUEUE_HOST_OUT = "QRC.OHC.RESP.QMPCINT9";
		Utilities.ENCODING_HOST = "UTF-8";
		
		Utilities.WSLDAP_ENDPOINT = "http://118.180.13.221:8080/ws-ldap3/wService";
		Utilities.COD_APLICACION_LDAP = "PBPHY00600";
		Utilities.USUARIO_GENERICO ="P017073";
	}
	public void contextDestroyed(ServletContextEvent e){
			System.out.println("Destroyed");
	}
}
